home *** CD-ROM | disk | FTP | other *** search
- unit DBWeb;
-
- interface
-
- uses Windows, SysUtils, Classes, SyncObjs, HTTPApp, DB, DBTables;
-
- type
-
- { TWebSession }
-
- { defined in DBTables }
- TWebSession = TSession;
-
- TDSTableProducer = class;
-
- { TDSTableProducerEditor }
-
- TDSTableProducerEditor = class
- public
- constructor Create(DSTableProducer: TDSTableProducer);
- destructor Destroy; override;
- procedure Changed; virtual;
- procedure PostChange; virtual;
- property DSTableProducer: TDSTableProducer;
- property DataSource: TDataSource;
- end;
-
- { THTTPDataLink }
-
- THTTPDataLink = class(TDataLink)
- protected
- procedure ActiveChanged; override;
- procedure DataSetChanged; override;
- procedure DataSetScrolled(Distance: Integer); override;
- procedure FocusControl(Field: TFieldRef); override;
- procedure EditingChanged; override;
- procedure LayoutChanged; override;
- procedure RecordChanged(Field: TField); override;
- procedure UpdateData; override;
- function GetMappedIndex(ColIndex: Integer): Integer;
- public
- constructor Create(DSTableProducer: TDSTableProducer);
- destructor Destroy; override;
- function AddMapping(const FieldName: string): Boolean;
- procedure ClearMapping;
- procedure Modified;
- procedure Reset;
- property DefaultFields: Boolean;
- property FieldCount: Integer;
- property Fields[I: Integer]: TField;
- property SparseMap: Boolean;
- end;
-
- { THTMLTableColumn }
-
- THTMLTableColumn = class(TCollectionItem)
- protected
- function GeTDSTableProducer: TDSTableProducer;
- function GetDisplayName: string; override;
- public
- constructor Create(Collection: TCollection); override;
- destructor Destroy; override;
- procedure AssignTo(Dest: TPersistent); override;
- procedure Update;
- property Field: TField;
- property DSTableProducer: TDSTableProducer;
- published
- property Align: THTMLAlign default haDefault;
- property BgColor: THTMLBgColor;
- property Custom: string;
- property FieldName: string;
- property Title: THTMLTableHeaderAttributes;
- property VAlign: THTMLVAlign default haVDefault;
- end;
-
- THTMLTableColumnClass = class of THTMLTableColumn;
-
- { THTMLTableColumns }
-
- THTMLColumnState = (csDefault, csCustom);
-
- THTMLTableColumns = class(TCollection)
- protected
- function GetAttrCount: Integer; override;
- function GetAttr(Index: Integer): string; override;
- function GetItemAttr(Index, ItemIndex: Integer): string; override;
- function GetOwner: TPersistent; override;
- procedure Update(Item: TCollectionItem); override;
- public
- constructor Create(DSTableProducer: TDSTableProducer;
- ColumnClass: THTMLTableColumnClass);
- function Add: THTMLTableColumn;
- procedure RestoreDefaults;
- procedure RebuildColumns;
- property State: THTMLColumnState;
- property DSTableProducer: TDSTableProducer;
- property Items[Index: Integer]: THTMLTableColumn; default;
- end;
-
- { TDSTableProducer }
-
- THTMLCaptionAlignment = (caDefault, caTop, caBottom);
-
- TCreateContentEvent = procedure (Sender: TObject; var Continue: Boolean) of object;
- THTMLGetTableCaptionEvent = procedure (Sender: TObject; var Caption: string;
- var Alignment: THTMLCaptionAlignment) of object;
- THTMLFormatCellEvent = procedure (Sender: TObject; CellRow, CellColumn: Integer;
- var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign;
- var CustomAttrs, CellData: string) of object;
- THTMLDataSetEmpty = procedure (Sender: TObject; var Continue: Boolean) of object;
-
- TDSTableProducer = class(TCustomContentProducer)
- protected
- function AcquireLayoutLock: Boolean;
- procedure BeginLayout;
- procedure DefineFieldMap;
- function DoCreateContent: Boolean;
- procedure DoFormatCell(CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;
- var Align: THTMLAlign; var VAlign: THTMLVAlign;
- var CustomAttrs, CellData: string); dynamic;
- procedure DoGetCaption(var TableCaption: string;
- var CaptionAlign: THTMLCaptionAlignment); dynamic;
- procedure EndLayout;
- function GetDataSet: TDataSet; virtual; abstract;
- function GetDataSource: TDataSource;
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- procedure LayoutChanged;
- procedure LinkActive(Value: Boolean);
- procedure SetColumns(Value: THTMLTableColumns);
- procedure SetDataSet(ADataSet: TDataSet); virtual; abstract;
- procedure SetDataSource(Value: TDataSource);
- function StoreColumns: Boolean;
- property DataLink: THTTPDataLink;
- property DataSource: TDataSource;
- property InternalDataSource: TDataSource;
- property OnCreateContent: TCreateContentEvent;
- property OnFormatCell: THTMLFormatCellEvent;
- property OnGetTableCaption: THTMLGetTableCaptionEvent;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure BeginUpdate;
- procedure EndUpdate;
- property Caption: string;
- property CaptionAlignment: THTMLCaptionAlignment default caDefault;
- property Columns: THTMLTableColumns;
- property DataSet: TDataSet;
- property Editor: TDSTableProducerEditor;
- property Footer: TStrings;
- property Header: TStrings;
- property MaxRows: Integer default 20;
- property RowAttributes: THTMLTableRowAttributes;
- property TableAttributes: THTMLTableAttributes;
- end;
-
- { TQueryTableProducer }
-
- TQueryTableProducer = class(TDSTableProducer)
- protected
- function GetDataSet: TDataSet; override;
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- procedure SetDataSet(ADataSet: TDataSet); override;
- public
- function Content: string; override;
- published
- property Caption;
- property CaptionAlignment;
- property Columns;
- property Footer;
- property Header;
- property MaxRows;
- property Query: TQuery;
- property RowAttributes;
- property TableAttributes;
- property OnCreateContent;
- property OnFormatCell;
- property OnGetTableCaption;
- end;
-
- { TDataSetTableProducer }
-
- TDataSetTableProducer = class(TDSTableProducer)
- protected
- function GetDataSet: TDataSet; override;
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- procedure SetDataSet(ADataSet: TDataSet); override;
- public
- function Content: string; override;
- published
- property Caption;
- property CaptionAlignment;
- property Columns;
- property Footer;
- property Header;
- property MaxRows;
- property DataSet;
- property RowAttributes;
- property TableAttributes;
- property OnCreateContent;
- property OnFormatCell;
- property OnGetTableCaption;
- end;
-
- function HtmlTable(DataSet: TDataSet; DataSetHandler: TDSTableProducer;
- MaxRows: Integer): string;
-
- implementation
-